// Copyright 叶湘 ( weixin:yexiang841, email:yexiang841@qq.com ), Shitouren Studio. All Rights Reserved.

#pragma once

#include "Pawn/Q3D_CPPA_Pawn.h"
#include "Hit/Q3D_CPPI_HitTarget.h"
#include "Q3D_CPPA_Pawn_Fighter.generated.h"

class UQ3D_CPPC_HitTarget;

/**
 *
 */
UCLASS(Blueprintable, ClassGroup = (Q3D), meta = (Tooltip = "Q3D_Pawn_Fighter 基类(C++)，在 Q3D_Pawn 上配置了 Fighter 属性和 HitTarget"))
class Q3D_LIB_API AQ3D_CPPA_Pawn_Fighter : public AQ3D_CPPA_Pawn, public IQ3D_CPPI_HitTarget
{
	GENERATED_BODY()

public:
	// Sets default values for this character's properties
	AQ3D_CPPA_Pawn_Fighter();

protected:
	// Called when the game starts or when spawned
	virtual void BeginPlay() override;

public:
	UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category = Q3D_Pawn, meta = (Tooltip = "HitTarget 管理器，负责接受和处理命中"))
	UQ3D_CPPC_HitTarget *Ptr_C_HitTarget;

public:
	virtual void Q3D_IF_PropertyState_InitDT_Get_Implementation(UDataTable *&ptr_dt_property_init) const override;

public:
	virtual void Q3D_IF_Hit_Set_Implementation(UQ3D_CPPU_Hit *ptr_u_hit, bool &bool_success, FString &string_log) override;

	virtual void Q3D_IF_Hit_Cancel_ById_Implementation(FName name_id, bool &bool_success, FString &string_log) override;

	virtual void Q3D_IF_Hit_Cancel_ByType_Implementation(EQ3D_CPPE_HitType enum_hit_type, int32 &int_count) override;

	virtual void Q3D_IF_Hit_Cancel_ByCauser_Implementation(EQ3D_CPPE_HitType enum_hit_type, AActor *ptr_a_hit_causer, int32 &int_count) override;

	virtual void Q3D_IF_Hit_Cancel_All_Implementation(int32 &int_count) override;
};
